perm filename LET.PUB[LET,JMC]7 blob
sn#199787 filedate 1976-02-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .<< Feature summary
C00005 00003 .DEVICE XGP
C00010 00004 .at "∂AIL" data "∞" ⊂
C00017 ENDMK
C⊗;
.<< Feature summary
.
.Start with
.require "let.pub[let,jmc]" source;
.Letterheads: ∂<type> <to>$<from>$<subject>$<date>∞
. <type> may be:
. AIL - AI Lab Letter
. MEM - AI Lab Memo
. ADM - admissions letter
. HOM - home address letter
. SEN - Sense letter
. <from> defaults depend on <type>,
. <date> defaults to today.
. Use "↓" wherever you want a CRLF.
.Signatures:
. .sgn - sincerely yours, with signature according to letterhead
. .sgnp - sincerely yours, John McCarthy
. .reg - best regards, with signature according to letterhead
. .regp - best regards, with no titles
.
.Other handy macros:
. FAC means FILL ADJUST
. CB "<sub-heading>" means make a centered boldface subheading. If the
. subheading contains any commas, be sure to enclose it in quotes.
. BOLDIT may be called within a block to cause quoted text " ... " to
. turn into boldface (without quotes) and broketed text < ... > to
. be put in italics (without brokets).
. REF may be called within a block to print "References:", then go into
. BOLDIT mode with a format suitable for a list of references.
.
.Below is the list of addressee abbreviations. Use as, e.g. "Dave Russell↓IPT".
.The abbreviation identifier may be up to 4 letters long.
.>>
.ARPA←"Advanced Research Projects Agency↓"&
. "1700 Wilson Boulevard↓Arlington, Virginia 22209";
.
.IPT←"Information Processing Techniques Office↓"&
. "Advanced Research Projects Agency↓"&
. "1700 Wilson Boulevard↓Arlington, Virginia 22209";
.DEVICE XGP
.bottom←53;
.page frame bottom high 85 wide
.area text lines 1 to bottom char 1 to 80;
.
.TURN ON "%{α"
.font 1 "basl30"; font 2 "basi30"; font 3 "basb30";
.AT "ffi" ⊂ IF 0<THISFONT≤3 THEN "≠" ELSE "fαfαi" ⊃;
.AT "ffl" ⊂ IF 0<THISFONT≤3 THEN "α∞" ELSE "fαfαl" ⊃;
.AT "ff" ⊂ IF 0<THISFONT≤3 THEN "≥" ELSE "fαf" ⊃;
.AT "fi" ⊂ IF 0<THISFONT≤3 THEN "α≡" ELSE "fαi" ⊃;
.AT "fl" ⊂ IF 0<THISFONT≤3 THEN "∨" ELSE "fαl" ⊃;
.AT "--" ⊂ IF 0<THISFONT≤3 THEN "¬" ELSE "-α-" ⊃;
.
.at "↓"; ⊂ }
.⊃;
.
.macro letter(data,aut); ⊂
.<< namad = toname↓addr1↓addr2↓...$author$subject$date$saluation>>
.before page ⊂ ⊃;
.ODDLEFTBORDER←EVENLEFTBORDER←1000;
.if going=0 then going←1 else next page;
.nofill;
.count page from 2;
.salut←"data"; foo←scan(salut," ","","XR");
.xxx←namad←scan(salut,"$","","IS"); yyy←author←scan(salut,"$","","IS");
.subject←scan(salut,"$","","IS"); dat←scan(salut,"$","","IS");
.if length(dat)≤2 then dat←date;
.if length(author)≤2 then yyy←author←"aut";
.zzz←scan(yyy,",↓");
.zzz←scan(xxx,"↓","","IS"); ln←length(zzz);
.if length(namad)>ln+3 then start
. if length(namad)≤ln+7 then namad←zzz&"↓"&eval(xxx);
. end;
.name←scan(zzz,",");
. ⊃
.
.macro head; ⊂ nofill; SKIP 4; select 1;
.(namad)}
.subj;
.if length(salut)>1 then start
Dear {(salut);}:
.end
.⊃
.
.macro memo; ⊂ begin "memo"
.skip 3;
.fill; nojust; indent 0,8; crbreak; tabs 9; turn on "\%";
.xxx←namad; nam←scan(xxx,"↓");
To:\%1{nam}
%3From:\%1{author}
.end "memo";
.subj;
.⊃
.
.macro subj; ⊂
.fac;
.if length(subject)>2 then BEGIN "subject" turn on "%∂"; nojust; indent 0,8;crbreak;
%3Subject:∂9%1{subject}
.end "subject";
.before page ⊂ once turn on "%→←"; select 3;
.name}←{dat}→Page {page!}%*
.skip;
. ⊃
.select 1;
. ⊃
.
.macro ref ⊂ select 3; nojust; boldit;
References:
.select 1; indent 0,8;
. ⊃
.
.macro sgn; ⊂ BEGIN "signed" SKIP 2; NOFILL; group;
Sincerely,
.SKIP 3;
{author}
.END "signed"; ⊃
.
.macro sgnp; ⊂ BEGIN "signedplain" SKIP 2; NOFILL; group;
Sincerely,
.SKIP 2;
John McCarthy
.END "signedplain"; ⊃
.
.macro reg; ⊂BEGIN "regards" SKIP 2; NOFILL; group;
Best regards,
.SKIP 3;
{author}
.END "regards"; ⊃
.
.macro regp; ⊂BEGIN "regardsplain" SKIP 2; NOFILL; group;
Best regards,
.SKIP 3;
John McCarthy
.END "regardsplain"; ⊃
.
.MACRO FAC ⊂ FILL ADJUST ⊃
.
.macro cb(head) ⊂ if lines<5 then next page else skip; once center; select 3
head
.⊃
.
.macro boldit ⊂ turn on "%";
. at """" ⊂ (if thisfont=1 then "%3" else "%1") ⊃;
. at "<" ⊂"%2"⊃; at ">" ⊂"%1"⊃;
.⊃
.at "∂AIL" data "∞"; ⊂
.letter(|data|,|John McCarthy↓Director↓Professor of Computer Science|);
.if on4=0 then start on4←1; FONT 4 "STA200"; end;
.if on5=0 then start on5←1; FONT 5 "NGB25"; end;
%4S%5 Artificial Intelligence Laboratory, STANFORD UNIVERSITY, Stanford, California 94305
.xgenlines←-4;
.once turn on "→"
Telephone 415 497-4430→{dat}
.head;
.⊃
.
.at "∂HOM" data "∞"; ⊂
.letter(|data|,|John McCarthy|);
.if on5=0 then start on5←1; FONT 5 "NGB25"; end;
.begin select 5; center;
846 Lathrop Drive
Stanford, California 94305
.nofill; turn on "→"
Telephone 415 321-7580→{dat}
.head;
.end
.⊃
.
.AT "∂MEM" data "∞" ⊂
.letter("data",
."John McCarthy, Director, Artificial Intelligence Lab.");
.if on6=0 then start on6←1; font 6 "micr25"; end;
.if on7=0 then start on7←1; font 7 "ngb30"; end;
.SELECT 6; CENTER;
OFFICE MEMORANDUM * STANFORD UNIVERSITY * OFFICE MEMORANDUM
.SKIP; SELECT 7;
STANFORD ARTIFICIAL INTELLIGENCE LABORATORY
.SELECT 3; SKIP;
{DAT}
.memo;
.⊃
.
.at "∂SEN" data "∞"; ⊂
.letter(|data|,|John McCarthy↓Chairman, Stanford Chapter of SENSE↓Professor of Computer Science|);
.if on5=0 then start on5←1; FONT 5 "NGB25"; end;
.if on7=0 then start on7←1; font 7 "ngb30"; end;
.if on8=0 then start on 8←1; font 8 "ngb15"; end;
.begin center;
%7 SENSE
%8 (Scientists for Enlightenment on Nuclear Sources of Energy)
.end
.skip
%5 Artificial Intelligence Laboratory, STANFORD UNIVERSITY, Stanford, California 94305
.xgenlines←-4;
.once turn on "→"
Telephone 415 497-4430→{dat}
.head;
.⊃
.
.
.at "∂ADM" data "∞"; ⊂
.letter(|data|,|John McCarthy↓Chairman of Admissions 1976↓Professor of Computer Science|);
.if on4=0 then start on4←1; FONT 4 "STA200"; end;
.if on5=0 then start on5←1; FONT 5 "NGB25"; end;
%4S%5 Computer Science Department, STANFORD UNIVERSITY, Stanford, California 94305
.xgenlines←-4;
.once turn on "→"
Telephone 415 497-4430→{dat}
.head;
.⊃
.going←on4←on5←0; on6←on7←on8←on9←0;
.portion main; place text;